class test1:
    def ordered_Array_Squared(nums: list[int]) -> list[int]:
        # 定义新数组接收结果
        res = [float()] * len(nums)
        # 原数组左右节点指针
        left, right, i = 0, len(nums) - 1, len(nums) - 1

        while (left < right):
            # 比较左右边界值 依次比较 有序前提下, 仅能确定最大值, 移动到最右侧
            if (nums[left] ** 2 < nums[right] ** 2):
                res[i] = nums[right] ** 2
                # 左节点小, 那么右节点左移 对比下一个元素
                right -= 1
            else:
                # 右节点下, 那么左节点右移, 对比下一个元素
                res[i] = nums[left] ** 2
                left += 1
            # 左右移动到中间时, 完成第一个元素的定位, 开始下一个元素1
            i -= 1
        return res

    result = ordered_Array_Squared([-4, -1, 0, 3, 10])
    print(result)
